An increasing number of applications depend on Network Quality of Service (QoS) for their performance. For example, in home networks, a home media server streams video to client devices throughout the home. Better QoS, and better bandwidth, allows the server to stream higher fidelity content to client devices. Hence it is important to optimize QoS and network bandwidth.
It is particularly important for unreliable and lower bandwidth networks such as wireless networks to optimize QoS and network bandwidth. The available bandwidth is consumed by the goodput, successful data transmissions, the badput, unsuccessful data transmissions, and the transmission overhead, non-data transmissions. Improving goodput and reducing badput results in better utilization of the available bandwidth. In unreliable networks, such as wireless networks, it is beneficial to be able to predict when communication between a source node and destination node is likely to fail. Predicted unreliability in the form a high communication failure rates may allow applications executing on the source node to make intelligent choices regarding the use of the network.